package com.just.fun.java8;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

/**
 * forEach为什么不能直接跳出循环？
 * 因为forEach的参数是一个无返回的Consumer函数式接口，循环的时候是循环调consumer的accept方法，
 * return的话也只是结束accept方法，整个循环还是继续的
 * 源码：
 * default void forEach(Consumer<? super T> action) {
 *         Objects.requireNonNull(action);
 *         for (T t : this) {
 *             action.accept(t);
 *         }
 *     }
 *
 */
public class ForEachTest {
    public static void main(String[] args) {
        List<String> list=new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.forEach(s->{
            System.out.println("print=>"+s);
            if(s.equals("b")){
                return;
            }
            System.out.println("------");
        });
        System.out.println("game over");
//        list.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println("得得得得得");
//            }
//        });
    }
}
